home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / conhlp03 / padp_src / iscktest.c < prev    next >
C/C++ Source or Header  |  1994-11-22  |  1KB  |  68 lines

  1. /*
  2.     iscktest.c
  3.     x=isck(x,c) : 文字種判定 x=0:1byte 1:1/2byte 2:2byte
  4.     iscktest 88あ24元気=+
  5.     iscktest 1絶大3まみ+アケタ/
  6. */
  7. #include <stdio.h>
  8. /* sjis 上位:81h-9fh e0h-efh 下位:3fh-fbh !7fh */
  9. #define isk1(c) ( 0x81<=(c) && (c)<=0x9f || 0xe0<=(c) && (c)<=0xef )
  10. #define isk2(c) ( 0x3f<=(c) && (c)<=0xfb && (c) != 0x7f )
  11. #define isck(x,c) (x==0)?(isk1(c)?1:0):(x==1)?2:(x==2)?(isk1(c)?1:0):0;
  12.  
  13. int exit(int);
  14. void main( int argc, char *argv[] ){
  15.     int k,i;
  16.     char c;
  17.     if( argc!=2 ){ fputs( argv[0],stderr ); exit(1); }
  18.  
  19.     for( i = 0 ; ( c = argv[1][i] ) != NULL ; i++ ){
  20.         printf("%02X/",c );
  21.     }
  22.     cputs("\r\n");
  23.  
  24.     k = 0;
  25.     for( i = 0 ; ( c = argv[1][i] ) != NULL ; i++ ){
  26.         switch ( k ) {
  27.         case 0:
  28.             if( isk1(c) ) k = 1;
  29.             else k = 0;
  30.             break;
  31.         case 1:
  32.             k = 2;
  33.             break;
  34.         case 2:
  35.             if( isk1(c) ) k = 1;
  36.             else k = 0;
  37.             break;
  38.         default:
  39.             exit(0);
  40.             break;
  41.         }
  42.         if( k == 0 ) putch('|');
  43.         if( k == 1 ) putch('>');
  44.         putch( c );
  45.     }
  46.     cputs("\r\n");
  47.  
  48.     k = 0;
  49.     for( i = 0 ; ( c = argv[1][i] ) != NULL ; i++ ){
  50.         k = ( k == 0 ) ? ( isk1(c) ? 1 : 0 )
  51.             : ( k == 1 ) ? 2 
  52.                 : ( k == 2 ) ? ( isk1(c) ? 1 : 0 ) : 0 ;
  53.         if( k == 0 ) putch('|');
  54.         if( k == 1 ) putch('>');
  55.         putch( c );
  56.     }
  57.     cputs("\r\n");
  58.  
  59.     k = 0;
  60.     for( i = 0 ; ( c = argv[1][i] ) != NULL ; i++ ){
  61.         k = isck( k,c );
  62.         if( k == 0 ) putch('|');
  63.         if( k == 1 ) putch('>');
  64.         putch( c );
  65.     }
  66. }
  67.         
  68.